home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / edit / jwpsrc.zip / MAIN.C < prev    next >
C/C++ Source or Header  |  1993-03-31  |  48KB  |  1,378 lines

  1. /* Copyright (C) Stephen Chung, 1991-1993.  All rights reserved. */
  2.  
  3. #include "jwp.h"
  4.  
  5. #include "idm.h"
  6. #include <stdarg.h>
  7. #ifdef CTL3D
  8.     #include <ctl3d.h>
  9. #endif CTL3D
  10.  
  11.  
  12. GLOBALOPTIONS   global;
  13. FILEOPTIONS     *fileoptions = NULL;
  14. FILEOPTIONS     *curfile = NULL;
  15. KANJIFONT       *InstalledFonts = NULL;
  16. ASCIIFONT       DefAsciiFont = { "Times New Roman", 12 };
  17. HANDLE          hInstance = NULL;
  18. HMENU           hmenu = NULL;
  19. HMENU           FullMenu, MinimalMenu;
  20. BOOL            Dialogs3D = FALSE;
  21.  
  22. static int        Untitled = 0;
  23. static BOOL     AllInitialized = FALSE;
  24.  
  25. static TOOLBARICON toolbar[] = {
  26.     { ID_KANA, 180, TBBORDER+2, 24, 24, 1, 0, NULL, "Kana_Undep", "Kana_Dep", "Kana_Grayed", "Kana_Pressed" },
  27.     { ID_ASCII, 210, TBBORDER+2, 24, 24, 0, 0, NULL, "Ascii_Undep", "Ascii_Dep", "Ascii_Grayed", "Ascii_Pressed" },
  28.     { ID_CONVERT, 250, TBBORDER+2, 24, 24, 0, 1, "CVT_Disabled", "CVT_Undep", NULL, NULL, "CVT_Pressed" },
  29.     { ID_BOLD, 290, TBBORDER+2, 24, 24, -1, 2, "Bold_Disabled", "Bold_Undep", "Bold_Dep", "Bold_Grayed", "Bold_Pressed" },
  30.     { ID_ITALICS, 320, TBBORDER+2, 24, 24, -1, 2, "Italics_Disabled", "Italics_Undep", "Italics_Dep", "Italics_Grayed", "Italics_Pressed" },
  31.     { ID_UNDERLINE, 350, TBBORDER+2, 24, 24, -1, 2, "Und_Disabled", "Und_Undep", "Und_Dep", "Und_Grayed", "Und_Pressed" },
  32.     { ID_REVERSE, 380, TBBORDER+2, 24, 24, -1, 2, "Rev_Disabled", "Rev_Undep", "Rev_Dep", "Rev_Grayed", "Rev_Pressed" },
  33.     { ID_HOLLOW, 410, TBBORDER+2, 24, 24, -1, 2, "Hollow_Disabled", "Hollow_Undep", "Hollow_Dep", "Hollow_Grayed", "Hollow_Pressed" },
  34.     { ID_SHADOW, 440, TBBORDER+2, 24, 24, -1, 2, "Shadow_Disabled", "Shadow_Undep", "Shadow_Dep", "Shadow_Grayed", "Shadow_Pressed" },
  35.     { ID_GLOSSARY, 480, TBBORDER+2, 24, 24, 0, 0, NULL, "Glossary_Undep", "Glossary_Dep", "Glossary_Grayed", "Glossary_Pressed" },
  36.     { ID_SPECIAL, 510, TBBORDER+2, 24, 24, 0, 0, NULL, "Special_Undep", "Special_Dep", "Special_Grayed", "Special_Pressed" },
  37.     { ID_LEFTRIGHT, 550, TBBORDER+2, 24, 24, -1, 0, "LR_Disabled", "LR_Undep", "LR_Dep", "LR_Grayed", "LR_Pressed" },
  38.     { ID_UPDOWN, 580, TBBORDER+2, 24, 24, -1, 0, "UD_Disabled", "UD_Undep", "UD_Dep", "UD_Grayed", "UD_Pressed" }
  39. };
  40.  
  41.  
  42.  
  43. LONG FAR PASCAL MainWinProc (HWND, WORD, WORD, LONG);
  44. extern LONG FAR PASCAL FileParentWinProc (HWND, WORD, WORD, LONG);
  45. extern LONG FAR PASCAL FileWinProc (HWND, WORD, WORD, LONG);
  46. extern LONG FAR PASCAL JeditProc (HWND, WORD, WORD, LONG);
  47. extern LONG FAR PASCAL JtextProc (HWND, WORD, WORD, LONG);
  48. extern LONG FAR PASCAL RulerProc (HWND, WORD, WORD, LONG);
  49. extern LONG FAR PASCAL ConvProc (HWND, WORD, WORD, LONG);
  50. extern LONG FAR PASCAL StatusProc (HWND, WORD, WORD, LONG);
  51. extern BOOL FAR PASCAL StatisticsProc (HWND, WORD, WORD, LONG);
  52. extern BOOL FAR PASCAL FileOpenDlgProc (HWND, WORD, WORD, LONG);
  53. extern BOOL FAR PASCAL FileSaveFormatProc (HWND, WORD, WORD, LONG);
  54. extern BOOL FAR PASCAL FileSaveAsDlgProc (HWND, WORD, WORD, LONG);
  55. extern BOOL FAR PASCAL DictionaryProc (HWND, WORD, WORD, LONG);
  56. extern LONG FAR PASCAL BigKanjiProc (HWND, WORD, WORD, LONG);
  57. extern BOOL FAR PASCAL KanjiInfoProc (HWND, WORD, WORD, LONG);
  58. extern BOOL FAR PASCAL JISInputProc (HWND, WORD, WORD, LONG);
  59. extern BOOL FAR PASCAL LookupProc (HWND, WORD, WORD, LONG);
  60. extern LONG FAR PASCAL LookupListProc (HWND, WORD, WORD, LONG);
  61. extern BOOL FAR PASCAL JISTableDlgProc (HWND, WORD, WORD, LONG);
  62. extern LONG FAR PASCAL JISTableProc (HWND, WORD, WORD, LONG);
  63. extern BOOL FAR PASCAL HotKeysProc (HWND, WORD, WORD, LONG);
  64. extern BOOL FAR PASCAL ChangeHotKeyProc (HWND, WORD, WORD, LONG);
  65. extern BOOL FAR PASCAL OptionsProc (HWND, WORD, WORD, LONG);
  66. extern BOOL FAR PASCAL GlossaryProc (HWND, WORD, WORD, LONG);
  67. extern BOOL FAR PASCAL GlossaryListProc (HWND, WORD, WORD, LONG);
  68. extern BOOL FAR PASCAL AboutProc (HWND, WORD, WORD, LONG);
  69. extern BOOL FAR PASCAL SimpleProc (HWND, WORD, WORD, LONG);
  70. extern LONG FAR PASCAL InputModeIconProc (HWND, WORD, WORD, LONG);
  71. extern BOOL FAR PASCAL InstalledFontsProc (HWND, WORD, WORD, LONG);
  72. extern BOOL FAR PASCAL UserConversionProc (HWND, WORD, WORD, LONG);
  73. extern BOOL FAR PASCAL EditUserConversionProc (HWND, WORD, WORD, LONG);
  74. extern BOOL FAR PASCAL SearchProc (HWND, WORD, WORD, LONG);
  75. extern BOOL FAR PASCAL ReplaceProc (HWND, WORD, WORD, LONG);
  76. extern BOOL FAR PASCAL ReplaceDlgProc (HWND, WORD, WORD, LONG);
  77. extern BOOL FAR PASCAL PrintProc (HWND, WORD, WORD, LONG);
  78. extern BOOL FAR PASCAL PageSetupProc (HWND, WORD, WORD, LONG);
  79. extern BOOL FAR PASCAL PrinterSetupProc (HWND, WORD, WORD, LONG);
  80. extern BOOL FAR PASCAL SummaryProc (HWND, WORD, WORD, LONG);
  81. extern BOOL FAR PASCAL HeaderProc (HWND, WORD, WORD, LONG);
  82. extern BOOL FAR PASCAL EditHeaderProc (HWND, WORD, WORD, LONG);
  83. extern BOOL FAR PASCAL FileFindProc (HWND, WORD, WORD, LONG);
  84. extern BOOL FAR PASCAL RunProc (HWND, WORD, WORD, LONG);
  85. extern BOOL FAR PASCAL TemplateProc (HWND, WORD, WORD, LONG);
  86. extern BOOL FAR PASCAL FormatParagraphProc (HWND, WORD, WORD, LONG);
  87.  
  88.  
  89. static void InitializeEverything(void)
  90. {
  91.     fileoptions = NULL;
  92.  
  93.     ReadOptionsFile();
  94.     InitPrinting();
  95.     InitFonts();
  96.     InitConversion();
  97.     ReadGlossary(global.glossary);
  98.     ReadConversionCache(global.convcache);
  99. }
  100.  
  101.  
  102.  
  103. void ErrorMessage(HWND hwnd, char *fmt, ...)
  104. {
  105.     va_list argptr;
  106.     char buffer[MAXLINELEN];
  107.  
  108.     va_start(argptr, fmt);
  109.     vsprintf(buffer, fmt, argptr);
  110.     va_end(argptr);
  111.  
  112.     MessageBeep(0);
  113.     MessageBox (hwnd, buffer, "Something is wrong...", MB_ICONEXCLAMATION | MB_OK);
  114. }
  115.  
  116.  
  117.  
  118. int Confirmation (HWND hwnd, char *fmt, ...)
  119. {
  120.     va_list argptr;
  121.     char buffer[MAXLINELEN];
  122.  
  123.     va_start(argptr, fmt);
  124.     vsprintf(buffer, fmt, argptr);
  125.     va_end(argptr);
  126.  
  127.     MessageBeep(0);
  128.     return (MessageBox (hwnd, buffer, "Please Confirm...", MB_ICONQUESTION | MB_YESNOCANCEL));
  129. }
  130.  
  131.  
  132.  
  133. int YesNo(HWND hwnd, char *fmt, ...)
  134. {
  135.     va_list argptr;
  136.     char buffer[MAXLINELEN];
  137.  
  138.     va_start(argptr, fmt);
  139.     vsprintf(buffer, fmt, argptr);
  140.     va_end(argptr);
  141.  
  142.     MessageBeep(0);
  143.     return (MessageBox (hwnd, buffer, "Please Confirm...", MB_ICONQUESTION | MB_YESNO));
  144. }
  145.  
  146.  
  147.  
  148. BOOL RetryMessage(char *fmt, ...)
  149. {
  150.     va_list argptr;
  151.     char buffer[MAXLINELEN];
  152.  
  153.     va_start(argptr, fmt);
  154.     vsprintf(buffer, fmt, argptr);
  155.     va_end(argptr);
  156.  
  157.     MessageBeep(0);
  158.     if (MessageBox (global.hwnd, buffer, "Something is wrong...",
  159.         MB_ICONEXCLAMATION | MB_RETRYCANCEL) == IDCANCEL) return (FALSE);
  160.     else
  161.         return (TRUE);
  162. }
  163.  
  164.  
  165.  
  166. static void AdjustAllChildWindows (int width, int height)
  167. {
  168.     int i;
  169.     int ToolBarHeight = 0, StatusBarHeight = 0;
  170.     RECT rect;
  171.  
  172.     if (global.tbhwnd != NULL) {
  173.         MoveWindow(global.tbhwnd, -1, -1, width + 2, TBHEIGHT + 2, TRUE);
  174.         ToolBarHeight = TBHEIGHT + 1;
  175.     }
  176.  
  177.     if (global.statushwnd != NULL) {
  178.         MoveWindow(global.statushwnd, -1, height - STATUSHEIGHT,
  179.                     width + 2, STATUSHEIGHT + 2, TRUE);
  180.         StatusBarHeight = STATUSHEIGHT;
  181.     }
  182.  
  183.     if (global.clienthwnd == NULL || global.convhwnd == NULL) return;
  184.  
  185.  
  186.     switch (global.listposition) {
  187.         case 0: MoveWindow(global.clienthwnd, 0, ToolBarHeight, width,
  188.                             height - StatusBarHeight - ToolBarHeight, TRUE);
  189.  
  190.                 if (!(GetWindowLong(global.convhwnd, GWL_STYLE) & WS_POPUP)) {
  191.                     DestroyWindow(global.convhwnd);
  192.                     global.convhwnd = CreateWindow("JWP Conversion Bar", NULL,
  193.                                                     WS_THICKFRAME | WS_VISIBLE | WS_POPUP,
  194.                                                     global.convbar.left, global.convbar.top,
  195.                                                     global.convbar.right, 0,
  196.                                                     global.hwnd, NULL, hInstance, NULL);
  197.                 }
  198.                 break;
  199.  
  200.         case 1: i = SYSFONT->height + 2 * BORDERSPACE +
  201.                         GetSystemMetrics(SM_CXVSCROLL) +
  202.                         2 * GetSystemMetrics(SM_CYBORDER);
  203.  
  204.                 if (GetWindowLong(global.convhwnd, GWL_STYLE) & WS_POPUP) {
  205.                     DestroyWindow(